﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using System.Web.Security;

namespace SFsoftSite.Cadastros
{
    public partial class CadastroCategoria : System.Web.UI.Page
    {
        #region Atributos

        BLCategoria _categoria;
        
        #endregion

        #region Page Load

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (!Roles.IsUserInRole("Admin"))
                    Response.Redirect("~/Login.aspx");

                AtualizaGrid();
            }
        }

        #endregion

        #region Eventos

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            _categoria = new BLCategoria();

            _categoria.InsertCategorias(txtNomeCategoria.Text);

            AtualizaGrid();
        }

        protected void EditRecord(object sender, GridViewEditEventArgs e)
        {

            GridView1.EditIndex = e.NewEditIndex;
            AtualizaGrid();

        }

        protected void CancelRecord(object sender, GridViewCancelEditEventArgs e)
        {

            GridView1.EditIndex = -1;
            AtualizaGrid();

        }

        protected void UpdateRecord(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow row = (GridViewRow)GridView1.Rows[e.RowIndex];
            int id = Int32.Parse(GridView1.DataKeys[e.RowIndex].Value.ToString());

            TextBox tnome = (TextBox)row.FindControl("txtCategoria");

            _categoria = new BLCategoria();

            try
            {
                _categoria.UpdateCategorias(id, tnome.Text);
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert(' Os dados foram atualizados com sucesso! ')", true);

            }
            catch 
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert(' Não foi possível atualizar com os dados atuais! ')", true);
                
            }
            
            GridView1.EditIndex = -1;

            AtualizaGrid();
        }

        protected void DeleteRecord(object sender, GridViewDeleteEventArgs e)
        {
            string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

            _categoria = new BLCategoria();

            if (_categoria.DeleteCategorias(Convert.ToInt32(id)))
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert(' O registro foi deletado com sucesso! ')", true);
           
            }
            else
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "Mensagem", "alert(' Não é possível deletar esse registro pois existe jogo nesta categoria!')", true);
            }
            

            AtualizaGrid();
        }


        #endregion

        #region Métodos

        private void AtualizaGrid()
        {
            _categoria = new BLCategoria();
            GridView1.DataSource = _categoria.GetCategorias();
            GridView1.DataBind();
        }

        #endregion
    }
}